package ziface

import "net"

// IConnection 定义连接模块的抽象层
type IConnection interface {
	// Start 启动连接
	Start()
	// Stop 停止连接
	Stop()
	// GetTCPConnection 获取当前连接绑定的conn
	GetTCPConnection() *net.TCPConn
	// GetConnID 获取当前连接模块的连接ID
	GetConnID() uint32
	// GetRemoteAddr 获取远程客户端的TCP状态
	GetRemoteAddr() net.Addr
	// SendMsg 提供一个SendMsg方法，先封包后发送
	SendMsg(msgId uint32, data []byte) error
	// SetProperty 设置连接属性
	SetProperty(key string, value interface{})
	// GetProperty 获取连接属性
	GetProperty(key string) (interface{}, error)
	// RemoveProperty 移除连接属性
	RemoveProperty(key string)
}

// HandleFunc 一个处理连接业务的方法
type HandleFunc func(*net.TCPConn, []byte, int) error
